package co.gov.medellin.ssti.sub.web.action;

import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Collection;
import java.util.LinkedList;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.springframework.beans.factory.annotation.Autowired;

import co.gov.medellin.ssti.sub.common.excepcion.SUBException;
import co.gov.medellin.ssti.sub.model.dao.exception.DAOException;
import co.gov.medellin.ssti.sub.model.service.AtributosService;
import co.gov.medellin.ssti.sub.model.service.BeneficiarioService;
import co.gov.medellin.ssti.sub.model.service.BeneficioService;
import co.gov.medellin.ssti.sub.model.service.InterfazMELService;
import co.gov.medellin.ssti.sub.model.service.SedeService;
import co.gov.medellin.ssti.sub.model.service.SubprogramaService;
import co.gov.medellin.ssti.sub.model.service.VflexService;
import co.gov.medellin.ssti.sub.model.vo.AtributoVO;
import co.gov.medellin.ssti.sub.model.vo.BeneficiarioVO;
import co.gov.medellin.ssti.sub.model.vo.InterfazMELVO;
import co.gov.medellin.ssti.sub.model.vo.SedeVO;
import co.gov.medellin.ssti.sub.model.vo.SubprogramaVO;
import co.gov.medellin.ssti.sub.model.vo.VflexVO;
import co.gov.medellin.ssti.sub.paoyer.administration.model.vo.UserVO;

public class SubprogramasatributosIngresoDatosAction extends Action {
	@Autowired
	AtributosService atributosServiceImpl;
	@Autowired
	BeneficiarioService beneficiarioServiceImpl;
	@Autowired
	BeneficioService beneficioServiceImpl;
	@Autowired
	InterfazMELService interfazMELServiceImpl;
	@Autowired
	SedeService sedeServiceImpl;
	@Autowired
	SubprogramaService subprogramaServiceImpl;
	@Autowired
	VflexService vflexServiceImpl;

	/**
	 * This is the main action called from the Struts framework.
	 * 
	 * @param mapping
	 *            The ActionMapping used to select this instance.
	 * @param form
	 *            The optional ActionForm bean for this request.
	 * @param request
	 *            The HTTP Request we are processing.
	 * @param response
	 *            The HTTP Response we are processing.
	 * @return
	 * @throws java.io.IOException
	 * @throws javax.servlet.ServletException
	 */
	@SuppressWarnings("unchecked")
	public ActionForward execute(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws IOException, ServletException {

		Collection<VflexVO> hechosVictimizantes = null;
		hechosVictimizantes = vflexServiceImpl
				.findVflex(VflexService.HECHO_VICTIMIZANTE);
		request.setAttribute("hechosVictimizantes", hechosVictimizantes);
		

		SubprogramaVO codigosub = new SubprogramaVO();
		String strCodigoSubpro = request.getParameter("codeSubPrograma");

		// Proceso para la auditoria
		UserVO user = (UserVO) request.getSession().getAttribute("userInfo");

		Calendar c = Calendar.getInstance();

		// Fin del proceso
		codigosub.setCode(new Long(strCodigoSubpro));

		boolean desdeSisben = false;
		HttpSession session = request.getSession();
		session.setAttribute("CodigoSubpro", strCodigoSubpro);
		session.removeAttribute("renovacion");
		session.removeAttribute("ListaAtributos");
		session.removeAttribute("DateBirth");
		session.setAttribute("renovacion", "nuevo");
		BeneficiarioVO beneVO = new BeneficiarioVO();
		List<BeneficiarioVO> coPropBeneficiario = (List<BeneficiarioVO>) session
				.getAttribute("beneSelected");
		List<AtributoVO> lAtributos = new LinkedList<AtributoVO>();
		Long CodeSubPro = new Long(strCodigoSubpro);
		boolean validoGF = false;
		boolean respuesta = false;

		// proceso para identificar si el beneficiario tiene grupo familiar
		beneVO = (BeneficiarioVO) coPropBeneficiario.get(0);
		Object obgrupo = (Object) beneVO.getGrupoFamiliarCode();

		// Proceso para identificar si el beneficio es para un grupo familiar
		try {
			validoGF = subprogramaServiceImpl
					.isSubprogramaParaGrupoFamiliar(CodeSubPro);
		} catch (DAOException e) {
			SUBException.logDebugError("", e);
		}
		// Fin del Proceso
		if (validoGF) {
			if (obgrupo != null) {
				try {
					List<BeneficiarioVO> coGrupoFami = (List<BeneficiarioVO>) beneficiarioServiceImpl
							.findGrupoFamiliar(beneVO);
					int tamagf = coGrupoFami.size();
					for (int k = 0; k < tamagf; k++) {
						if (!respuesta) {
							BeneficiarioVO bene1VO = new BeneficiarioVO();
							bene1VO = (BeneficiarioVO) coGrupoFami.get(k);
							Long codebeneficiario = bene1VO.getCode();

							respuesta = beneficiarioServiceImpl
									.isBeneficiarioSubprograma(
											codebeneficiario, CodeSubPro);
						}
					}
				} catch (DAOException e) {
					SUBException.logDebugError("", e);
				}
			}
		}
		// fin del proceso

		if (!respuesta) {
			// String strCodigoUsuario = (String)
			// session.getAttribute("Usuario");

			Collection<AtributoVO> atributos = null;
			Collection<SedeVO> cSedes = null;

			// AtributoVO objAtributoVO = new AtributoVO();

			String strCodigoBeneficiario = (String) session
					.getAttribute("beneficiario");
			try {
				// proceso para identificar si el beneficiario ya tiene el
				// beneficio por primera vez
				boolean existe = beneficioServiceImpl.isExisteBeneficiario(
						new Long(strCodigoBeneficiario), new Long(
								strCodigoSubpro));

				// fin proceso
				if (!existe) {
					List<SubprogramaVO> lNom = (List<SubprogramaVO>) subprogramaServiceImpl
							.findSubprogramaByCriteria(codigosub,
									user.getCode(), user.getUserGroupName(),
									user.getCodeArea());

					codigosub = (SubprogramaVO) lNom.get(0);
					String strNombre = codigosub.getNombre();
					session.setAttribute("NombreSub", strNombre);

					atributos = atributosServiceImpl.findAtributosSubprograma(
							Long.valueOf(strCodigoSubpro), "A", 0);

					int tam = atributos.size();
					String strTamano = String.valueOf(tam);

					session.setAttribute("tamanoLista", strTamano);
					session.setAttribute("ListaAtributos", atributos);

					cSedes = sedeServiceImpl.findTotalSedebyUser(
							user.getCode(), codigosub.getCode(),
							user.getUserGroupName(), user.getCodeArea());

					if ((Object) cSedes != null) {
						if (cSedes.size() > 0)
							session.setAttribute("ListaSede", cSedes);
					}

					// Carlos interface Sisben

					try {
						SubprogramaVO subproVO = new SubprogramaVO();
						subproVO.setCode(new Long(strCodigoSubpro));

						List<SubprogramaVO> subpro = (List<SubprogramaVO>) subprogramaServiceImpl
								.findSubprogramaByCriteria(codigosub,
										user.getCode(),
										user.getUserGroupName(),
										user.getCodeArea());
						if (subpro != null && subpro.size() > 0) {
							subproVO = (SubprogramaVO) subpro.get(0);
							if (subproVO.getValidarSisben().equals("S")) {
								// Buscando el beneficiario en la bd del sisben
								beneVO = new BeneficiarioVO();
								beneVO.setCode(new Long(strCodigoBeneficiario));

								try {
									List<BeneficiarioVO> beneficiario = (List<BeneficiarioVO>) beneficiarioServiceImpl
											.findBeneficiarioByCriteria(beneVO,
													"");
									if (beneficiario != null
											&& beneficiario.size() > 0) {
										beneVO = (BeneficiarioVO) beneficiario
												.get(0);
										BeneficiarioVO beneSisbenVO = new BeneficiarioVO();
										// empezando a buscar el beneficiario en
										// sisben por todos los criterios
										beneSisbenVO.setTipoDocumento(beneVO
												.getTipoDocumento());
										beneSisbenVO.setNumeroDocumento(beneVO
												.getNumeroDocumento());
										beneSisbenVO.setNombre1(beneVO
												.getNombre1());
										beneSisbenVO.setNombre2(beneVO
												.getNombre2());
										beneSisbenVO.setPrimerApellido(beneVO
												.getPrimerApellido());
										beneSisbenVO.setSegundoApellido(beneVO
												.getSegundoApellido());
										beneSisbenVO.setFechaNacimiento(beneVO
												.getFechaNacimiento());
										List<BeneficiarioVO> beneficiarioSisben = (List<BeneficiarioVO>) beneficiarioServiceImpl
												.findBeneficiarioSisben(beneSisbenVO);
										boolean encontro = false;
										if (beneficiarioSisben != null
												&& beneficiarioSisben.size() > 0) {
											encontro = true;
										} else {
											beneSisbenVO = new BeneficiarioVO();
											beneSisbenVO.setNombre1(beneVO
													.getNombre1());
											beneSisbenVO.setNombre2(beneVO
													.getNombre2());
											beneSisbenVO
													.setPrimerApellido(beneVO
															.getPrimerApellido());
											beneSisbenVO
													.setSegundoApellido(beneVO
															.getSegundoApellido());
											beneSisbenVO
													.setFechaNacimiento(beneVO
															.getFechaNacimiento());
											beneficiarioSisben = (List<BeneficiarioVO>) beneficiarioServiceImpl
													.findBeneficiarioSisben(beneSisbenVO);
											if (beneficiarioSisben != null
													&& beneficiarioSisben
															.size() > 0) {
												encontro = true;
											} else {
												beneSisbenVO = new BeneficiarioVO();
												beneSisbenVO
														.setNumeroDocumento(beneVO
																.getNumeroDocumento());
												beneSisbenVO.setNombre1(beneVO
														.getNombre1());
												beneSisbenVO.setNombre2(beneVO
														.getNombre2());
												beneSisbenVO
														.setPrimerApellido(beneVO
																.getPrimerApellido());
												beneSisbenVO
														.setSegundoApellido(beneVO
																.getSegundoApellido());
												beneficiarioSisben = (List<BeneficiarioVO>) beneficiarioServiceImpl
														.findBeneficiarioSisben(beneSisbenVO);
												if (beneficiarioSisben != null
														&& beneficiarioSisben
																.size() > 0) {
													encontro = true;
												} else {
													beneSisbenVO = new BeneficiarioVO();
													beneSisbenVO
															.setNumeroDocumento(beneVO
																	.getNumeroDocumento());
													beneSisbenVO
															.setNombre1(beneVO
																	.getNombre1());
													beneSisbenVO
															.setPrimerApellido(beneVO
																	.getPrimerApellido());
													beneSisbenVO
															.setFechaNacimiento(beneVO
																	.getFechaNacimiento());
													beneficiarioSisben = (List<BeneficiarioVO>) beneficiarioServiceImpl
															.findBeneficiarioSisben(beneSisbenVO);
													if (beneficiarioSisben != null
															&& beneficiarioSisben
																	.size() > 0) {
														encontro = true;
													} else {
														beneSisbenVO = new BeneficiarioVO();
														beneSisbenVO
																.setNumeroDocumento(beneVO
																		.getNumeroDocumento());
														beneSisbenVO
																.setNombre1(beneVO
																		.getNombre1());
														beneSisbenVO
																.setPrimerApellido(beneVO
																		.getPrimerApellido());
														beneficiarioSisben = (List<BeneficiarioVO>) beneficiarioServiceImpl
																.findBeneficiarioSisben(beneSisbenVO);
														if (beneficiarioSisben != null
																&& beneficiarioSisben
																		.size() > 0) {
															encontro = true;
														} else {
															beneSisbenVO = new BeneficiarioVO();
															beneSisbenVO
																	.setNumeroDocumento(beneVO
																			.getNumeroDocumento());
															beneSisbenVO
																	.setNombre2(beneVO
																			.getNombre2());
															beneSisbenVO
																	.setSegundoApellido(beneVO
																			.getSegundoApellido());
															beneSisbenVO
																	.setFechaNacimiento(beneVO
																			.getFechaNacimiento());
															beneficiarioSisben = (List<BeneficiarioVO>) beneficiarioServiceImpl
																	.findBeneficiarioSisben(beneSisbenVO);
															if (beneficiarioSisben != null
																	&& beneficiarioSisben
																			.size() > 0) {
																encontro = true;
															} else {
																beneSisbenVO = new BeneficiarioVO();
																beneSisbenVO
																		.setTipoDocumento(beneVO
																				.getTipoDocumento());
																beneSisbenVO
																		.setNumeroDocumento(beneVO
																				.getNumeroDocumento());
																beneficiarioSisben = (List<BeneficiarioVO>) beneficiarioServiceImpl
																		.findBeneficiarioSisben(beneSisbenVO);
																if (beneficiarioSisben != null
																		&& beneficiarioSisben
																				.size() > 0) {
																	encontro = true;
																}
															}
														}
													}
												}
											}
										}

										if (!encontro) {
											session.setAttribute(
													"msg",
													"El beneficiario no se encontro en Sisben por lo tanto no se le puede otorgar un beneficio que valide contra Sisben.");
											return mapping
													.findForward("verbeneficio");
										} else {
											if (beneficiarioSisben.size() == 1) {
												if (subpro != null
														&& subpro.size() > 0) {
													subproVO = (SubprogramaVO) subpro
															.get(0);

													List<AtributoVO> atri = (List<AtributoVO>) atributos;
													if (atri != null
															&& atri.size() > 0) {
														AtributoVO atributo = null;
														beneVO = (BeneficiarioVO) beneficiarioSisben
																.get(0);
														for (int i = 0; i < atri
																.size(); i++) {
															atributo = (AtributoVO) atri
																	.get(i);

															if (atributo
																	.getNombre()
																	.equals("NIVEL SISBEN")) {
																desdeSisben = true;
																request.setAttribute(
																		"nivel",
																		beneVO.getNivelSisben());
															}
															if (atributo
																	.getNombre()
																	.equals("PUNTAJE")) {
																desdeSisben = true;
																request.setAttribute(
																		"puntaje",
																		beneVO.getPuntajeSisben());
															}
															if (atributo
																	.getNombre()
																	.equals("FICHA SISBEN")) {
																desdeSisben = true;
																request.setAttribute(
																		"ficha",
																		beneVO.getFichaSisben());
															}
														}
													}
												}
											}
										}
									}

								} catch (DAOException e) {
									System.err
											.println("/******** TDSUB - cwsub");
									e.printStackTrace();
									System.err
											.println("TDSUB - cwsub ********/");
								}
								// fin interfaz SISBEN
							}
						}

						// inicio interfaz MATRICULA EN LINEA

						if (subpro != null && subpro.size() > 0) {
							subproVO = (SubprogramaVO) subpro.get(0);
							if (subproVO.getValidarEstud().equals("S")) {
								beneVO = new BeneficiarioVO();
								beneVO.setCode(new Long(strCodigoBeneficiario));

								boolean encontro = false;
								try {
									List<BeneficiarioVO> beneficiario = (List<BeneficiarioVO>) beneficiarioServiceImpl
											.findBeneficiarioByCriteria(beneVO,
													"");
									if (beneficiario != null
											&& beneficiario.size() > 0) {
										beneVO = (BeneficiarioVO) beneficiario
												.get(0);
										BeneficiarioVO beneMLVO = new BeneficiarioVO();
										// empezando a buscar el beneficiario en
										// ML por tipo y numero de documento
										beneMLVO.setTipoDocumento(beneVO
												.getTipoDocumento());
										beneMLVO.setNumeroDocumento(beneVO
												.getNumeroDocumento());
										List<BeneficiarioVO> beneficiarioMEL = (List<BeneficiarioVO>) beneficiarioServiceImpl
												.findBeneficiarioMEL(beneMLVO);

										if (beneficiarioMEL != null
												&& beneficiarioMEL.size() > 0) {
											encontro = true;

											List<InterfazMELVO> camposMEL = (List<InterfazMELVO>) interfazMELServiceImpl
													.findCamposGenericos(beneVO);
											if (camposMEL != null
													&& camposMEL.size() > 0) {
												List<AtributoVO> atri = (List<AtributoVO>) atributos;
												if (atri != null
														&& atri.size() > 0) {
													AtributoVO atributo = null;
													InterfazMELVO MELVO = (InterfazMELVO) camposMEL
															.get(0);
													for (int i = 0; i < atri
															.size(); i++) {
														atributo = (AtributoVO) atri
																.get(i);
														if (!desdeSisben) {
															if (atributo
																	.getNombre()
																	.equals("NIVEL SISBEN")) {
																request.setAttribute(
																		"nivel",
																		MELVO.getNivelSisben());
															}
															if (atributo
																	.getNombre()
																	.equals("PUNTAJE")) {
																request.setAttribute(
																		"puntaje",
																		MELVO.getPuntajeSisben());
															}
														}

														if (atributo
																.getNombre()
																.equals("NOMBRE PADRE")) {
															request.setAttribute(
																	"nompadre",
																	MELVO.getNomPadre());
														}
														if (atributo
																.getNombre()
																.equals("CEDULA PADRE")) {
															request.setAttribute(
																	"cedpadre",
																	MELVO.getCedulaPadre());
														}
														if (atributo
																.getNombre()
																.equals("TELEFONO PADRE")) {
															request.setAttribute(
																	"telpadre",
																	MELVO.getTelPadre());
														}
														if (atributo
																.getNombre()
																.equals("NOMBRE MADRE")) {
															request.setAttribute(
																	"nommadre",
																	MELVO.getNomMadre());
														}
														if (atributo
																.getNombre()
																.equals("CEDULA MADRE")) {
															request.setAttribute(
																	"cedmadre",
																	MELVO.getCedulaMadre());
														}
														if (atributo
																.getNombre()
																.equals("TELEFONO MADRE")) {
															request.setAttribute(
																	"telmadre",
																	MELVO.getTelMadre());
														}
														if (atributo
																.getNombre()
																.equals("NOMBRE ACUDIENTE")) {
															request.setAttribute(
																	"nomacu",
																	MELVO.getNomAcu());
														}
														if (atributo
																.getNombre()
																.equals("CEDULA ACUDIENTE")) {
															request.setAttribute(
																	"cedacu",
																	MELVO.getCedulaAcu());
														}
														if (atributo
																.getNombre()
																.equals("TELEFONO ACUDIENTE")) {
															request.setAttribute(
																	"telacu",
																	MELVO.getTelAcu());
														}
														if (atributo
																.getNombre()
																.equals("INSTITUCI�N EDUCATIVA")) {
															request.setAttribute(
																	"nominsti",
																	MELVO.getNomInstitucion());
														}
														if (atributo
																.getNombre()
																.equals("DIRECCI�N INST. EDUCATIVA")) {
															request.setAttribute(
																	"dirinsti",
																	MELVO.getDirInstitucion());
														}
														if (atributo
																.getNombre()
																.equals("TELEFONO INST. EDUCATIVA")) {
															request.setAttribute(
																	"telinsti",
																	MELVO.getTelInstitucion());
														}
														if (atributo
																.getNombre()
																.equals("NOMBRE SEDE")) {
															request.setAttribute(
																	"nomsede",
																	MELVO.getNomSede());
														}
														if (atributo
																.getNombre()
																.equals("DIRECCION SEDE")) {
															request.setAttribute(
																	"dirsede",
																	MELVO.getDirSede());
														}
														if (atributo
																.getNombre()
																.equals("TELEFONO SEDE")) {
															request.setAttribute(
																	"telsede",
																	MELVO.getTelSede());
														}
														if (atributo
																.getNombre()
																.equals("GRADO")) {
															request.setAttribute(
																	"grado",
																	MELVO.getGrado());
														}
														if (atributo
																.getNombre()
																.equals("JORNADA")) {
															request.setAttribute(
																	"jornada",
																	MELVO.getJornada());
														}
														if (atributo
																.getNombre()
																.equals("NUCLEO EDUCATIVO")) {
															request.setAttribute(
																	"nucleo",
																	MELVO.getNucleo());
														}
													}
												}
											}
										}
									}

								} catch (DAOException e) {
									SUBException.logDebugError("", e);
								}

								if (!encontro) {
									session.setAttribute(
											"msg",
											"El beneficiario no se encontro en Matricula en Linea por lo tanto no se le puede otorgar un beneficio que valide contra Matricula en Linea.");
									return mapping.findForward("verbeneficio");
								}
							}
						}

						// fin interfaz MATRICULA EN LINEA

					} catch (DAOException e) {
						SUBException.logDebugError("", e);
					}

					// /////////////FIN INTERFACES///////////////////
					// Proceso para calcular la edad
					beneVO = (BeneficiarioVO) coPropBeneficiario.get(0);
					String strFechaNacimiento = beneVO.getFechaNacimiento();
					if (strFechaNacimiento != null
							&& !strFechaNacimiento.equals("")) {
						AtributoVO objAtriVO = new AtributoVO();
						lAtributos = (List<AtributoVO>) atributos;
						if (atributos != null && atributos.size() != 0) {
							for (int i = 0; i < lAtributos.size(); i++) {
								objAtriVO = (AtributoVO) lAtributos.get(i);
								if ((objAtriVO.getDescripcion()).equals("EDAD")) {
									Calendar calendario = Calendar
											.getInstance();
									String strFechaActual = (calendario
											.get(Calendar.DAY_OF_MONTH) < 10 ? "0"
											: "")
											+ calendario
													.get(Calendar.DAY_OF_MONTH)
											+ "/"
											+ ((calendario.get(Calendar.MONTH) + 1) < 10 ? "0"
													: "")
											+ (calendario.get(Calendar.MONTH) + 1)
											+ "/"
											+ calendario.get(Calendar.YEAR);

									String ArrFechaActual[] = strFechaActual
											.split("/");
									String strDayAc = ArrFechaActual[0];
									String strMonthAc = ArrFechaActual[1];
									String strYearAc = ArrFechaActual[2];

									String ArrFechaNacimiento[] = ((String) beneVO
											.getFechaNacimiento()).split("/");
									String strDayNa = ArrFechaNacimiento[0];
									String strMonthNa = ArrFechaNacimiento[1];
									String strYearNa = ArrFechaNacimiento[2];

									// resto los a�os de las dos fechas
									int iEdad = Integer.parseInt(strYearAc)
											- Integer.parseInt(strYearNa) - 1; // -1
																				// porque
																				// no
																				// se
																				// si
																				// ha
																				// cumplido
																				// a�os
																				// ya
																				// este
																				// a�o

									// si resto los meses y me da menor que 0
									// entonces no ha cumplido a�os. Si da
									// mayor si ha cumplido
									if (((Integer.parseInt(strMonthAc)) - (Integer
											.parseInt(strMonthNa))) > 0)
										iEdad += 1;

									if (((Integer.parseInt(strMonthAc)) - (Integer
											.parseInt(strMonthNa))) == 0) {
										// si resto los dias y me da menor que 0
										// entonces no ha cumplido a�os. Si da
										// mayor o igual si ha cumplido
										if (((Integer.parseInt(strDayAc)) - (Integer
												.parseInt(strDayNa))) >= 0)
											iEdad += 1;
									}

									request.setAttribute("Edad",
											String.valueOf(iEdad));
									session.setAttribute("DateBirth",
											(String) beneVO
													.getFechaNacimiento());
								}
							}

						}
					}
					// Fin del proceso

					// Proceso para obtener el valor del beneficio
					String strCostBene = null;

					strCostBene = beneficioServiceImpl
							.findCostoBeneficio(new Long(strCodigoSubpro));

					if (strCostBene != null) {
						request.setAttribute("CostBene", strCostBene);
					}
					// Fin del proceso

					// Proceso para obtener la fecha del sistema
					SimpleDateFormat dateFormat2 = new SimpleDateFormat(
							"dd/MM/yyyy");
					String strDate = dateFormat2.format(c.getTime());
					request.setAttribute("DateBene", strDate);
					// Fin del proceso

					// Proceso para obtener el tipo de beneficio
					String strTipoBeneficio = (String) session
							.getAttribute("NombreSub");
					request.setAttribute("TipoBene", strTipoBeneficio);
					// Fin del proceso

				} else {
					session.setAttribute(
							"msgdar",
							"El beneficiario ya tiene el beneficio. Si el icono de renovar esta presente por favor hacer clic");
					return mapping.findForward("verbeneficio");

				}

			} catch (DAOException e) {
				SUBException.logDebugError("", e);
			}

			return mapping.findForward("success");
		} else {
			session.setAttribute("msg1",
					"El beneficio ya se le dio a un miembro del grupo familiar");
			return mapping.findForward("verbeneficio");
		}
	}
}